package co.edu.poligran.cluseva.agrupamiento;

import weka.clusterers.SimpleKMeans;
import weka.core.DistanceFunction;
import weka.core.Instances;
import co.edu.poligran.cluseva.distancias.Distancia;

public class SimpleKMeansCustom extends SimpleKMeans implements
		AgrupamientoParticional {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8381133364675184131L;
	private Instances instancias;
	private int numClusteres;
	private SimpleKMeans kmeans;
	private int maxIteraciones;
	private int funcionDistancia;

	public SimpleKMeansCustom() {
		kmeans = new SimpleKMeans();
	}

	@Override
	public void buildClusterer(Instances instancias) throws Exception {
		this.instancias = instancias;
	}

	@Override
	public int numberOfClusters() throws Exception {
		kmeans.setNumClusters(numClusteres);
		return numClusteres;
	}

	public void setMaxIteraciones(int maxIteraciones) throws Exception {
		this.maxIteraciones = maxIteraciones;
		kmeans.setMaxIterations(maxIteraciones);
	}

	public void setFuncionDistancia(Distancia distancia) throws Exception {
		kmeans.setDistanceFunction((DistanceFunction) distancia);
	}

}
